iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 9
1
Modern Web

React Native 航向真全端,建構雙平台 App系列 第 9

React Native 基礎元件 <Button>、<TouchableOpacity> 簡介

  • 分享至 

  • xImage
  •  

Button 在 React Native 其實算是特殊的,0.38 版以前的 React Native 並沒有 Button 這個元件的,都要用 <TouchableOpacity> 這個很像 <View> 的元件,但是點下去後會變透明的元件來做按鈕,裡面再放一個 <Text> 排個版,就是一顆自己的按鈕了,但是現在 0.38 後出現了 <Button> 元件,所以現在能直接使用,不過有個缺點,在 IOS 跟 Android 的樣子長得不一樣,所以為了要統一按鈕形狀,通常我都還是會自己嗑一個自己喜歡的按鈕。

TouchableOpacity

使用 SOP : import { TouchableOpacity } from 'react-native';
使用範例

<TouchableOpacity style={styles.button} onPress={function(){ console.log('按到我了') }}>
  <Text style={styles.buttonText}> TouchableOpacity Button </Text>
</TouchableOpacity>

從 onPress 這個 props 名稱上我們可以猜到這是 TouchableOpacity 的點擊事件,當點擊後會出發這個 function。

Button

跟其他 Component 一樣使用 SOP: import { Button } from 'react-native';
使用範例

<Button
  onPress={function(){ console.log('按到我了') }}
  title="Learn More"
  color="#841584" 
/>

Button 一樣有 onPress 可以使用,跟 TouchableOpacity 的使用方法大同小異。

最後來一個完整的範例:

import React, { Component } from 'react';
import {
  StyleSheet,
  View,
  Text,
  TouchableOpacity,
  Button
} from 'react-native';

export default (props) => (
  <View style={styles.center}>
    <TouchableOpacity style={styles.button}>
      <Text style={styles.buttonText}> TouchableOpacity Button </Text>
    </TouchableOpacity>
    <Button
      title="Learn More"
      color="#841584"
    />
  </View>
);

const styles = StyleSheet.create({
  center: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  button: {
    margin: 20,
    padding: 10,
    paddingLeft: 20,
    paddingRight: 20,
    backgroundColor: '#406E9F',
    borderRadius: 9,
    alignItems: 'center',
    justifyContent: 'center',
  },
  buttonText: {
    color: '#fff',
    fontSize: 20,
    fontWeight: 'bold',
  },
});

結果長這樣
http://ithelp.ithome.com.tw/upload/images/20161225/20103341eeBbHV7Vch.png

這裡我們能發現一個跟之前範例當中不一樣的地方,我們 export 時適用

export default (props) => ();

之前的範例當中都是

export default class HelloReactNative extends Component {}

這裡個有什麼差別呢?

export function 的是 pure function 我們稱之為 dump Component, export class 的我們稱之為 smart function,這個章節中我們不深入的介紹,有興趣的朋友可以看這篇 『React 最佳實踐與實用函式』,簡單來說就是 pure function 的 Component 只是一層皮,沒有狀態的單純做顯示,可以方便的除錯和重用。

那這種 pure function 怎麼使用呢?
我們可以這樣

import ButtonSample from './src/ButtonSample';

然後在 render 中使用

<View style={{ flex: 1 }}>
  <ButtonSample />
</View>

未來有機會再更詳細的介紹 dump Component、 smart Component


有問題歡迎來 React Native Taiwan 問喔
創科資訊


上一篇
React Native 基礎元件 <Image> 簡介
下一篇
React Native 基礎元件 <ListView> 簡介
系列文
React Native 航向真全端,建構雙平台 App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言